// pages/recent/recent.js
import request from "../../utils/request";

let Navindex = 0;

Page({

    /**
     * 页面的初始数据
     */
    data: {
         videoGroupList:[],   //导航标签数据
         navId:0,
         videoList:[],
         videoId:'',
         videoUpdateTime:[],
         navIdList:[],
         TopvideoId:'',
         scrollTop: 0 ,
         offset:0,
         navId:0,
         isMoveToUp:false,
         urls:[]      //保存音乐url
         
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
 
    this.getVideoGroupListData()

    },



  async getVideoGroupListData(){
    let navIdList = []
    let {navId}= this.data
    let videoGroupList =  this.data.videoGroupList
    let listLong = this.data.videoGroupList.length
    let res = await request('/video/group/list');
    let videoGroupListData = res.data.splice(listLong,500)
    videoGroupList.push(...videoGroupListData)
    for(let i = 0;i<=videoGroupList.length-1;i++){
      navIdList.push(videoGroupList[i].id)
    }
    // console.log(videoGroupList[0].id)
    navId=videoGroupList[91].id
    this.setData({
      videoGroupList,
      navIdList,
      // nowNavId:navIdList[91],
      navId
    })
    // console.log(navId)
    this.getVideoList(navId);
  },


  async getVideoList(navId){
    let that = this
    let {offset} = this.data
    wx.showLoading({
      title: '加载中',
    })
    // console.log(offset)
    // console.log(navId)
    let videoListData = await request('/video/group', {id:navId,offset});
    wx.hideLoading()


    if(videoListData.code === 301){ // 登录成功
      // console.log(result)
      wx.showToast({
        title: '请先登录',
        icon: 'error',
        success: () => {
          // 跳转至登录界面
          wx.reLaunch({
            url: '/pages/login/login'
          })
        }
      })
    // console.log(videoListData)
    }
    let videoList = videoListData.datas 
    console.log(videoListData)
    that.setData({
      videoList,
      TopvideoId:videoListData.datas[0].data.vid

    })

    let scrollTop = this.data.scrollTop
    scrollTop =  scrollTop === 0?1:0
    this.setData({
      scrollTop
    })
    
  },

  //  播放视频回调
  async handlePlay(event){
    /*
      问题： 多个视频同时播放的问题
    * 需求：
    *   1. 在点击播放的事件中需要找到上一个播放的视频
    *   2. 在播放新的视频之前关闭上一个正在播放的视频
    * 关键：
    *   1. 如何找到上一个视频的实例对象
    *   2. 如何确认点击播放的视频和正在播放的视频不是同一个视频
    * 单例模式：
    *   1. 需要创建多个对象的场景下，通过一个变量接收，始终保持只有一个对象，
    *   2. 节省内存空间
    * */
      // console.log('111111')
      let vid = event.currentTarget.id;
    // // 获取视频nrl
    let res = await request('/video/url',{id:vid})

    this.setData({
      urls:res.urls
    })
    
    // // 关闭上一个播放的视频
    this.vid !== vid && this.videoContext && this.videoContext.stop();
    if(this.vid !== vid){
      if(this.videoContext){
        this.videoContext.stop()
      }
    }
    this.vid = vid;
    
    // // 更新data中videoId的状态数据
    this.setData({
      videoId: vid
    })

    // // 创建控制video标签的实例对象
    this.videoContext = wx.createVideoContext(vid);
    // // 判断当前的视频之前是否播放过，是否有播放记录, 如果有，跳转至指定的播放位置
    let {videoUpdateTime} = this.data;
    let videoItem = videoUpdateTime.find(item => item.vid === vid);
    if(videoItem){
      this.videoContext.seek(videoItem.currentTime);
    }
    // this.play()
    // this.videoContext.play();
    // this.videoContext.stop();
  },
   
  // play(){
  //   this.videoContext.play();
  // },
  // 前往搜索页面
  toSearch(){
   wx.navigateTo({
     url:"/pages/search/search"
   })
  },

  handleTimeUpdate(event){
    // console.log("数据更新")
    // let videoTimeObj = {vid: event.currentTarget.id, currentTime: event.detail.currentTime};
    // let {videoUpdateTime} = this.data;
    // /*
    // * 思路： 判断记录播放时长的videoUpdateTime数组中是否有当前视频的播放记录
    // *   1. 如果有，在原有的播放记录中修改播放时间为当前的播放时间
    // *   2. 如果没有，需要在数组中添加当前视频的播放对象
    // *
    // * */
    // let videoItem = videoUpdateTime.find(item => item.vid === videoTimeObj.vid);
    // if(videoItem){ // 之前有
    //   videoItem.currentTime = event.detail.currentTime;
    // }else { // 之前没有
    //   videoUpdateTime.push(videoTimeObj);
    // }
    // // 更新videoUpdateTime的状态
    // this.setData({
    //   videoUpdateTime
    // })
  },
  
  // 视频播放结束调用的回调
  handleEnded(event){
    // 移除记录播放时长数组中当前视频的对象
    let {videoUpdateTime} = this.data;
    videoUpdateTime.splice(videoUpdateTime.findIndex(item => item.vid === event.currentTarget.id), 1);
    this.setData({
      videoUpdateTime
    })
  },


  //下拉刷新
  // handleRefresher(){
  //   // console.log('scroll-view 下拉刷新');
  //   // 再次发请求，获取最新的视频列表数据
  //   this.getVideoList(this.data.navId);
  // },
  

  
  changeNav(event){
    
    let navId = event.currentTarget.id;
    this.setData({
      navId:navId*1,
      offset:0
    })
    this.getVideoList(this.data.navId);
  },

  downChangeNav(id){
    
    let navId = id;
    this.setData({
      navId:navId*1
    })
    this.getVideoList(this.data.navId);
  },



  
  handleNavToLower(){
  
    this.getVideoGroupListData();
    
  },







    // 自定义下拉刷新的回调： scroll-view
    handleRefresher(){
      // console.log('scroll-view 下拉刷新');
      // 再次发请求，获取最新的视频列表数据
      // console.log('滑到顶了，开始加载更多');

      var that = this;                     //setTimeout里会用到，
      let {offset} = this.data
      offset = offset+8
      that.setData({                       //MoveToUp触发
        // istrue:false,
        isMoveToUp: true,
        offset
      })
      this.getVideoList(this.data.navId);
      setTimeout(function() {              //时间限制
  
          that.setData({
            isMoveToUp:false,
            // istrue:true,
          })
  
      }, 500)     
    },
    
    // 自定义上拉触底的回调 scroll-view
    handleToLower(){
      let navIdList = this.data.navIdList;
      // let index = navIdList.indexOf(this.data.navId);
      // this.setData({
      //   navId:index++
      // })
      // console.log(navIdList[index+1])
      // this.downChangeNav(navIdList[index++])
      //  console.log("下拉")
       if(!this.data.navId) { 
         let navId = this.data.nowNavId
          this.setData({
            navId
          })
        }

        let index = navIdList.indexOf(this.data.navId);
        this.setData({
          navId:navIdList[index+1]
        })
        this.downChangeNav(this.data.navId)
     
    },

    quanping(){
      this.videoContext.requestFullScreen()
    },







    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {
      console.log("页面隐藏")
      // this.videoContext.pause()
      if(this.videoContext){
        this.videoContext.pause()
      }
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function ({from}) {
      if(from === 'buttom'){
        return{
          title:'邑聆听',
          page:'/pages/video/video',
          imageUrl:'/static/images/gocar.jpeg'
        }
      }else{
        return{
          title:'邑聆听',
          page:'/pages/video/video',
          imageUrl:'/static/images/gocar.jpeg'
        }
      }
      // console.log(from)

    }
})